// pages/health/ai-calorie/ai-calorie.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    currentMode: 'food', // food, barcode, ingredient
    // 模式配置数据
    modeConfig: {
      food: {
        title: 'AI算热量',
        instruction: '请从正上方俯拍食物,以便提升识别效果',
        icon: '🍔',
        label: '识别食物',
        loadingText: '正在识别食物...',
        scanFrame: 'food-frame',
        scanLine: 'food-line'
      },
      barcode: {
        title: '扫条形码',
        instruction: '支持包装食品、GLP-1药品的条形码扫描',
        icon: '📊',
        label: '扫条形码',
        loadingText: '正在扫描条形码...',
        scanFrame: 'barcode-frame',
        scanLine: 'barcode-line'
      },
      ingredient: {
        title: '拍配料表',
        instruction: '拍包装食品上的配料表,解读是否健康',
        icon: '📋',
        label: '拍配料表',
        loadingText: '正在分析配料表...',
        scanFrame: 'ingredient-frame',
        scanLine: 'ingredient-line'
      }
    },
    // 当前模式配置
    currentConfig: {},
    // 识别结果数据
    recognitionResult: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 根据传入的模式设置当前模式
    const mode = options.mode || 'food';
    this.setData({
      currentMode: mode
    });
    this.updateModeConfig();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 返回上一页
   */
  goBack() {
    wx.navigateBack();
  },

  /**
   * 切换模式
   */
  switchMode(e) {
    const mode = e.currentTarget.dataset.mode;
    this.setData({
      currentMode: mode
    });
    this.updateModeConfig();
  },

  /**
   * 更新模式配置
   */
  updateModeConfig() {
    const currentConfig = this.data.modeConfig[this.data.currentMode];
    this.setData({
      currentConfig: currentConfig
    });
    
    // 更新导航栏标题
    wx.setNavigationBarTitle({
      title: currentConfig.title
    });
  },

  /**
   * 拍照
   */
  capturePhoto() {
    const currentConfig = this.data.currentConfig;
    
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['camera', 'album'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        this.processImage(tempFilePath);
      },
      fail: (err) => {
        console.error('拍照失败:', err);
        wx.showToast({
          title: '拍照失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 处理图片
   */
  processImage(imagePath) {
    const currentConfig = this.data.currentConfig;
    
    wx.showLoading({
      title: currentConfig.loadingText
    });

    // 模拟识别过程
    setTimeout(() => {
      wx.hideLoading();
      
      const result = this.generateMockResult();
      this.setData({
        recognitionResult: result
      });
      
      this.showResultModal(result);
    }, 2000);
  },

  /**
   * 生成模拟识别结果
   */
  generateMockResult() {
    const mode = this.data.currentMode;
    const currentConfig = this.data.currentConfig;
    
    switch (mode) {
      case 'food':
        return {
          type: 'food',
          name: '苹果',
          calories: 52,
          unit: '100g',
          nutrition: {
            protein: 0.3,
            fat: 0.2,
            carbs: 13.8,
            fiber: 2.4
          },
          confidence: 95,
          tips: '苹果富含膳食纤维，有助于消化'
        };
      case 'barcode':
        return {
          type: 'barcode',
          productName: '蒙牛纯牛奶',
          brand: '蒙牛',
          barcode: '6901234567890',
          nutrition: {
            calories: 54,
            protein: 3.0,
            fat: 3.2,
            carbs: 4.8
          },
          ingredients: ['生牛乳'],
          healthScore: 88,
          tips: '纯牛奶营养丰富，适合日常饮用'
        };
      case 'ingredient':
        return {
          type: 'ingredient',
          productName: '某品牌饼干',
          healthScore: 65,
          analysis: {
            good: ['全麦粉', '天然香草'],
            warning: ['白砂糖', '氢化植物油'],
            bad: ['人工色素', '防腐剂']
          },
          suggestions: [
            '建议选择无糖或低糖版本',
            '避免含有氢化植物油的产品',
            '优先选择天然成分较多的产品'
          ],
          overall: '中等健康度，建议适量食用'
        };
      default:
        return null;
    }
  },

  /**
   * 显示结果弹窗
   */
  showResultModal(result) {
    let content = '';
    let title = '识别结果';
    
    switch (result.type) {
      case 'food':
        title = '食物识别结果';
        content = `识别到：${result.name}\n热量：${result.calories}千卡/${result.unit}\n置信度：${result.confidence}%\n\n${result.tips}`;
        break;
      case 'barcode':
        title = '条形码识别结果';
        content = `商品：${result.productName}\n品牌：${result.brand}\n条形码：${result.barcode}\n健康评分：${result.healthScore}分\n\n${result.tips}`;
        break;
      case 'ingredient':
        title = '配料表分析结果';
        content = `产品：${result.productName}\n健康评分：${result.healthScore}分\n\n${result.overall}\n\n建议：\n${result.suggestions.join('\n')}`;
        break;
    }

    wx.showModal({
      title: title,
      content: content,
      showCancel: false,
      confirmText: '确定',
      success: () => {
        // 可以跳转到结果页面或返回健康页面
        wx.navigateBack();
      }
    });
  },

  /**
   * 打开相册
   */
  openGallery() {
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        this.processImage(tempFilePath, this.data.currentMode);
      },
      fail: (err) => {
        console.error('选择图片失败:', err);
        wx.showToast({
          title: '选择图片失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 打开历史记录
   */
  openHistory() {
    wx.showToast({
      title: '历史记录功能开发中',
      icon: 'none'
    });
  }
});
